# 分区相关工具

from config.video_zone import SORTED_BY_RANKING, VIDEO_ZONES


def get_all_zones() -> list[dict]:
    """获取原始顺序的所有分区列表"""
    return [zone.copy() for zone in VIDEO_ZONES]


def get_zones_sorted_by_tid() -> list[dict]:
    """获取按tid升序排序的分区列表"""
    return sorted(VIDEO_ZONES, key=lambda x: x["tid"], reverse=False)


def get_ranking_zones() -> list[dict]:
    """获取B站排行榜上显示的分区列表顺序"""
    # 创建 tid 到 zone 的映射
    tid_to_zone = {zone["tid"]: zone for zone in VIDEO_ZONES}

    # 按照排行榜顺序的分区列表
    return [tid_to_zone[tid].copy() for tid in SORTED_BY_RANKING if tid in tid_to_zone]


def get_zone_by_tid(tid: int) -> dict | None:
    """根据分区ID获取分区信息"""
    for zone in VIDEO_ZONES:
        if zone["tid"] == tid:
            return zone.copy()
    return None


def get_name_by_tid(tid: int) -> str | None:
    """根据分区ID获取分区名字"""
    zone = get_zone_by_tid(tid)
    return zone["name"] if zone else None


def get_code_by_tid(tid: int) -> str | None:
    """根据分区ID获取分区代号"""
    zone = get_zone_by_tid(tid)
    return zone["code"] if zone else None


def get_tid_by_code(code: str) -> int | None:
    """根据分区代号获取分区ID"""
    for zone in VIDEO_ZONES:
        if zone["code"] == code:
            return zone["tid"]
    return None


def get_name_by_code(code: str) -> str | None:
    """根据分区代号获取分区名称"""
    tid = get_tid_by_code(code)
    return get_name_by_tid(tid) if tid else None


def is_valid_tid(tid):
    """检查分区ID是否有效"""
    return get_zone_by_tid(tid) is not None


def is_valid_code(code):
    """检查分区代号是否有效"""
    return get_tid_by_code(code) is not None
